import request from '@/utils/request'

// 报价单相关API

/**
 * 获取报价单列表
 * @param {Object} params 查询参数
 */
export function getQuoteList(params) {
  return request({
    url: '/api/quotes',
    method: 'get',
    params
  })
}

/**
 * 获取报价记录列表
 * @param {Object} params 查询参数
 */
export function getQuoteRecords(params) {
  return request({
    url: '/api/quotes/records',
    method: 'get',
    params
  })
}

/**
 * 获取报价单详情
 * @param {Number} id 报价单ID
 */
export function getQuoteDetail(id) {
  return request({
    url: `/api/quotes/${id}`,
    method: 'get'
  })
}

/**
 * 新增报价单
 * @param {Object} data 报价单数据
 */
export function createQuote(data) {
  return request({
    url: '/api/quotes',
    method: 'post',
    data
  })
}

/**
 * 更新报价单
 * @param {Number} id 报价单ID
 * @param {Object} data 报价单数据
 */
export function updateQuote(id, data) {
  return request({
    url: `/api/quotes/${id}`,
    method: 'put',
    data
  })
}

/**
 * 删除报价单
 * @param {Number} id 报价单ID
 */
export function deleteQuote(id) {
  return request({
    url: `/api/quotes/${id}`,
    method: 'delete'
  })
}

/**
 * 提交报价单
 * @param {Number} id 报价单ID
 * @param {String} reason 提交原因
 */
export function submitQuote(id, reason) {
  return request({
    url: `/api/quotes/${id}/submit`,
    method: 'post',
    data: { reason }
  })
}

/**
 * 批准报价单
 * @param {Number} id 报价单ID
 * @param {String} reason 批准原因
 */
export function approveQuote(id, reason) {
  return request({
    url: `/api/quotes/${id}/approve`,
    method: 'post',
    data: { reason }
  })
}

/**
 * 拒绝报价单
 * @param {Number} id 报价单ID
 * @param {String} reason 拒绝原因
 */
export function rejectQuote(id, reason) {
  return request({
    url: `/api/quotes/${id}/reject`,
    method: 'post',
    data: { reason }
  })
}

/**
 * 复制报价单
 * @param {Number} id 报价单ID
 */
export function copyQuote(id) {
  return request({
    url: `/api/quotes/${id}/copy`,
    method: 'post'
  })
}

/**
 * 生成报价单编号
 */
export function generateQuoteCode() {
  return request({
    url: '/api/quotes/generate-code',
    method: 'get'
  })
}

// 客户相关API（用于报价单中的客户选择）

/**
 * 获取客户列表（用于下拉选择）
 * @param {String} keyword 搜索关键词，可选
 */
export function getCustomerOptions(keyword = '') {
  return request({
    url: '/api/customers',
    method: 'get',
    params: {
      page: 1,
      size: 50, // 减少返回数量，支持动态加载
      status: 'ENABLED', // 只获取启用状态的客户
      keyword // 模糊查询关键词，可匹配客户代码、客户名称、公司名称
    }
  })
}

/**
 * 搜索客户（模糊查询）
 * @param {String} keyword 搜索关键词
 */
export function searchCustomers(keyword) {
  return request({
    url: '/api/customers/search',
    method: 'get',
    params: {
      keyword,
      size: 20 // 限制搜索结果数量
    }
  })
}

/**
 * 根据客户代码获取客户详情
 * @param {String} customerCode 客户代码
 */
export function getCustomerByCode(customerCode) {
  return request({
    url: `/api/customers/code/${customerCode}`,
    method: 'get'
  })
}

// 员工相关API（用于报价单中的业务员选择）

/**
 * 获取员工列表（用于下拉选择）
 * @param {String} keyword 搜索关键词，可选
 */
export function getEmployeeOptions(keyword = '') {
  return request({
    url: '/api/employees',
    method: 'get',
    params: {
      page: 1,
      size: 50, // 减少返回数量，支持动态加载
      status: 'ENABLED', // 只获取启用状态的员工
      role: 'MANAGER', // 只获取业务经理
      keyword // 模糊查询关键词，可匹配员工代码、员工姓名
    }
  })
}

/**
 * 搜索员工（模糊查询）
 * @param {String} keyword 搜索关键词
 */
export function searchEmployees(keyword) {
  return request({
    url: '/api/employees/search',
    method: 'get',
    params: {
      keyword,
      role: 'MANAGER', // 只搜索业务经理
      size: 20 // 限制搜索结果数量
    }
  })
}

/**
 * 获取物料编码列表（用于下拉选择）
 * @param {String} keyword 搜索关键词，可选
 */
export function getMaterialOptions(keyword = '') {
  return request({
    url: '/api/materials',
    method: 'get',
    params: {
      keyword,
      size: 20 // 限制搜索结果数量
    }
  })
} 